#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h> //Libreria per i flag
#include <sys/stat.h> //Altri flag
#include <color.h>

int file_exists(char *);//1 se esiste 0 se non esiste

int main(int argc,char *argv[]){
	if (argc<2){
		printf("%sUsage:\n\t./setdir <directory_per_zephyr-os>\n%s",C_YLW,C_END);
		exit(-1);
	}
	char *olddir=malloc(strlen(get_current_dir_name()));
	strcpy(olddir,get_current_dir_name());
	char *directory=malloc(strlen(argv[1])+2);
	
	if(argv[1][0]!='/'){
		printf ("%s Ehi probabilmente hai sbagliato a immettere l'input. Ecco un'esempio di director valida: /mnt/zephyr-os/%s\n",C_RED,C_END);
		exit(EXIT_FAILURE);
	}
	strcpy(directory,argv[1]);
	
	if (directory[strlen(directory)-1] != '/')
		strcat(directory,"/");
		
	//Controlla se la directory esiste con chdir, quindi torna indetro.
	if(chdir(directory)!=0){
		printf("%sErrore: %s%s\nCrea la directory con \"mkdir %s\" prima di lanciare questo script\n",C_RED,(char *)strerror(errno),C_END,directory);
		exit(EXIT_FAILURE);
	} else {
		if(chdir(olddir)!=0){
			printf("%sErrore ritornando nella vecchia directory: %s%s\n",C_RED,(char *)strerror(errno),C_END);
			exit(EXIT_FAILURE);
		}
	}
	//Se la directory esiste continua
	int file_d;
	if(file_exists("/tmp/.zephyr-os-set")==1)
		printf("%sIl file esiste, verrà sovrascritto%s",C_YLW,C_END);
	else 
		printf("%sIl file di configurazione ancora non esiste, verrà quindi creato%s\n",C_YLW,C_END);

	if ((file_d=open("/tmp/.zepyr-os-set",O_WRONLY|O_TRUNC|O_CREAT,S_IWUSR|S_IRUSR|S_IRGRP|S_IROTH))==-1){
		printf("%sErrore critico durante la creazione del file di configurazione %s\n",C_RED,C_END);
		exit(-1);
	}
	if(write(file_d,directory,strlen(directory))==-1){
		printf("%sErrore durante la scrittura del file.%s\n",C_RED,C_END);
		exit(-1);
	}
	close(file_d);
	printf("%sFile di configurazione scritto con successo!%s\n",C_GRN,C_END);
	free (directory);
	return 0;
}
	
int file_exists(char * filename){
	FILE *file;
    if ((file = fopen(filename, "r"))){
        fclose(file);
        return 1;
    }
    return 0;
}
